package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 代金券规则操作记录对象 voucher_operation_logs
 *
 * @author ruoyi
 * @date 2025-05-23
 */
public class VoucherOperationLogs extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 操作记录唯一标识符（自增数字ID） */
    private Long id;

    /** 关联的代金券编号（如"VOUCH-202311-001"） */
    @Excel(name = "关联的代金券编号")
    private String voucherCode;

    /** 代金券关联的门店信息（JSON格式，存储门店ID、名称等，可为NULL表示全局规则） */
    @Excel(name = "代金券关联的门店信息", readConverterExp = "J=SON格式，存储门店ID、名称等，可为NULL表示全局规则")
    private String storeInfo;

    /** 操作影响的门店ID（若为全局规则则可为"GLOBAL"） */
    @Excel(name = "操作影响的门店ID")
    private String operatedStoreId;

    /** 操作影响的门店名称（如"上海旗舰店"） */
    @Excel(name = "操作影响的门店名称")
    private String operatedStoreName;

    /** 操作类型（枚举值） */
    @Excel(name = "操作类型", readConverterExp = "枚=举值")
    private String operationType;

    /** 操作开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "操作开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date operationStartTime;

    /** 操作结束时间（若为即时操作可为NULL） */
    @Excel(name = "操作结束时间", readConverterExp = "若=为即时操作可为NULL")
    private Date operationEndTime;

    /** 操作员工ID（如"EMP001"） */
    @Excel(name = "操作员工ID")
    private String operatorId;

    /** 操作员工姓名（如"张三"） */
    @Excel(name = "操作员工姓名")
    private String operatorName;

    /** 操作详情（如修改前后的规则对比，JSON格式） */
    @Excel(name = "操作详情", readConverterExp = "如=修改前后的规则对比，JSON格式")
    private String operationDetails;

    /** 操作员工的IP地址（用于安全审计） */
    @Excel(name = "操作员工的IP地址", readConverterExp = "用=于安全审计")
    private String ipAddress;

    /** 操作设备信息（如浏览器类型、操作系统） */
    @Excel(name = "操作设备信息", readConverterExp = "如=浏览器类型、操作系统")
    private String deviceInfo;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setVoucherCode(String voucherCode)
    {
        this.voucherCode = voucherCode;
    }

    public String getVoucherCode()
    {
        return voucherCode;
    }

    public void setStoreInfo(String storeInfo)
    {
        this.storeInfo = storeInfo;
    }

    public String getStoreInfo()
    {
        return storeInfo;
    }

    public void setOperatedStoreId(String operatedStoreId)
    {
        this.operatedStoreId = operatedStoreId;
    }

    public String getOperatedStoreId()
    {
        return operatedStoreId;
    }

    public void setOperatedStoreName(String operatedStoreName)
    {
        this.operatedStoreName = operatedStoreName;
    }

    public String getOperatedStoreName()
    {
        return operatedStoreName;
    }

    public void setOperationType(String operationType)
    {
        this.operationType = operationType;
    }

    public String getOperationType()
    {
        return operationType;
    }

    public void setOperationStartTime(Date operationStartTime)
    {
        this.operationStartTime = operationStartTime;
    }

    public Date getOperationStartTime()
    {
        return operationStartTime;
    }

    public void setOperationEndTime(Date operationEndTime)
    {
        this.operationEndTime = operationEndTime;
    }

    public Date getOperationEndTime()
    {
        return operationEndTime;
    }

    public void setOperatorId(String operatorId)
    {
        this.operatorId = operatorId;
    }

    public String getOperatorId()
    {
        return operatorId;
    }

    public void setOperatorName(String operatorName)
    {
        this.operatorName = operatorName;
    }

    public String getOperatorName()
    {
        return operatorName;
    }

    public void setOperationDetails(String operationDetails)
    {
        this.operationDetails = operationDetails;
    }

    public String getOperationDetails()
    {
        return operationDetails;
    }

    public void setIpAddress(String ipAddress)
    {
        this.ipAddress = ipAddress;
    }

    public String getIpAddress()
    {
        return ipAddress;
    }

    public void setDeviceInfo(String deviceInfo)
    {
        this.deviceInfo = deviceInfo;
    }

    public String getDeviceInfo()
    {
        return deviceInfo;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("voucherCode", getVoucherCode())
                .append("storeInfo", getStoreInfo())
                .append("operatedStoreId", getOperatedStoreId())
                .append("operatedStoreName", getOperatedStoreName())
                .append("operationType", getOperationType())
                .append("operationStartTime", getOperationStartTime())
                .append("operationEndTime", getOperationEndTime())
                .append("operatorId", getOperatorId())
                .append("operatorName", getOperatorName())
                .append("operationDetails", getOperationDetails())
                .append("ipAddress", getIpAddress())
                .append("deviceInfo", getDeviceInfo())
                .append("createTime", getCreateTime())
                .append("phone", getPhone())
                .toString();
    }
}
